替换引号

时间:2016-01-16 22:47:53

标签: php regex

好的,我找到了答案 PHP - split a string of HTML attributes into an indexed array

感谢' S

我想用%20

替换引号之间的每个空格字符

示例:

<input type="text" title="this is a fish">

期望的结果:

<input type="text" title="this%20is%20a%20fish">

另一个例子

$_POST['foo'] = '<input type="text" title="this is a fish">';
$parsed = '<input type="text" title="this%20is%20a%20fish">';

如我所见,我只想更换qoutes内的空间,而不是任何其他空间。 所以str_replace在这里根本没有帮助

最令人遗憾的最终结果是参数数组

这就是我做的事情

<?php
$tag_parsed = trim($tag_parsed);
$tag_parsed = str_replace('"', '', $tag_parsed);
$tag_parsed = str_replace(' ', '&', $tag_parsed);
parse_str($tag_parsed, $tag_parsed);

但是当参数有空格时,它会中断。

1 个答案:

答案 0 :(得分:0)

<强>更新

根据你上次的评论,你似乎需要这样的东西:

$str = '<input type="text" title="this is a fish">';
preg_match('/title="(.*)"/', $str, $title);
$parsed_title = str_replace(' ', '%20', $title[1]);

但似乎可以采取一些措施来改善代码的其余部分。

您必须使用urlencode或类似功能:

$str = "Your spaced string";
$new = urlencode($str); //Your%20spaced%20string

或者,使用preg_replace

$str = "Your spaced string";
$new = preg_replace("/\s+/", "%20", $str);

或者,没有正则表达式:

$new = str_replace(" ", "%20", $str);