我构建了一个前端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 );