为什么我的str_place不能处理前端提交的短代码?

时间:2013-08-23 作者:Suzanne

我构建了一个前端post提交表单,允许用户包含SoundCloud提供的短代码。SoundCloud短代码通常如下所示:

[soundcloud url="http://api.soundcloud.com/playlists/92355602" params="" width=" 100%" height="450" iframe="true" /]
用户将短代码粘贴到我的表单中,我的表单很好地接收到短代码。在将其保存为post meta之前,我正在尝试对其执行一些str\\u replace函数。

if( isset( $_POST[\'scembed\'] ) ) {
    $scembed = $_POST[\'scembed\'];
    $scembed = str_replace( " 100%", "100%", $scembed );
    $scembed = str_replace( "params=\\"\\"", "params=\\"show_artwork=false\\"", $scembed );
    $scembed = str_replace( "height=\\"450\\"", "height=\\"405\\"", $scembed );
}
第一个有效,因为它只是删除字符串中的错误空格。但是接下来的两个,我实际上需要包含属性及其双引号,以准确地定位要更改的字符串。

这行不通,我也不知道为什么。我甚至试过这个:

$pfind = \'params=""\';
$preplace = \'params="show_artwork=false"\';
$scembed = str_replace( $pfind, $preplace, $scembed );
我错过了什么?每当为属性包含双引号时,该函数将被忽略:-/

--用于RAV-------------------

<form name="create_post" method="post" action="" enctype="multipart/form-data">
    <input type="text" name="scembed" maxlength="160" />
    <input type="submit" value="Submit" name="submit" />
</form>

if( !empty( $_POST ) ) {
  if( !empty( $_POST[\'scembed\'] ) ) {
      $scsource = $_POST[\'scembed\'];
    $searchReplaceArray = array(
      \' 100%\' => \'100%\', 
      \'params=""\' => \'params="show_artwork=false"\',
      \'height="450"\' => \'height="405"\',
    );
    $scembed = str_replace( array_keys( $searchReplaceArray ), array_values( $searchReplaceArray ), $scsource );
  }
}

if( $scembed )
  add_post_meta( $post_id, \'scembed\', $scembed, TRUE );

1 个回复
最合适的回答,由SO网友:Ravinder Kumar 整理而成

尝试在替换字符串中的文本之前放置此代码

在…内if( !empty( $_POST[\'scembed\'] ) ) {

$_POST[\'scembed\'] = stripslashes( $_POST[\'scembed\'] );

Note

出现问题,因为您的报价在字符串中转义,所以“变成”

结束

相关推荐

从Googlebot到/xmlrpc.php的许多POST请求正在关闭服务器吗?

我有几个wordpress的博客,我一直在尝试访问它们,但速度很慢。我查看了我的服务器日志,发现了这个stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:28 -0700] \"POST /xmlrpc.php HTTP/1.1\" 200 595 \"-\" \"GoogleBot/1.0\" stanfordflipside.com:80 188.138.33.149 - - [17/Aug/2013:17:14:28 -