你知道怎么用PHP用空格字符替换html标签吗?
如果我显示
strip_tags('<h1>Foo</h1>bar');
Run Code Online (Sandbox Code Playgroud)
我得到结果"foobar"但我需要保持单词是"foo bar".
use*_*521 48
$string = '<h1>Foo</h1>bar';
$spaceString = str_replace( '<', ' <',$string );
$doubleSpace = strip_tags( $spaceString );
$singleSpace = str_replace( ' ', ' ', $doubleSpace );
Run Code Online (Sandbox Code Playgroud)
Rez*_*ned 37
试试这个.
preg_replace('#<[^>]+>#', ' ', '<h1>Foo</h1>bar');
Run Code Online (Sandbox Code Playgroud)
Cia*_*tic 16
在大多数情况下,Preg替换很好,有一个角落的情况,如这里所讨论的.这应该适用于:
strip_tags(str_replace('<', ' <', $str));
在任何标记之前添加空格在HTML中有效.它也有一些警告,比如你的文字由于某种原因而"<"并且不想在它之前添加空格.
我用来自 user40521 的例子帮助了我自己,但我用与 php 的 strip_tags 相同的 api 制作了一个函数,它不使用多个变量,并且还进行了修剪,因此从开始/结束中删除了一个空格。
/**
* @param string $string
* @param string|null $allowable_tags
* @return string
*/
function strip_tags_with_whitespace($string, $allowable_tags = null)
{
$string = str_replace('<', ' <', $string);
$string = strip_tags($string, $allowable_tags);
$string = str_replace(' ', ' ', $string);
$string = trim($string);
return $string;
}
Run Code Online (Sandbox Code Playgroud)
试试这个:
$str = '<h1>Foo</h1>bar';
echo trim(preg_replace('/<[^>]*>/', ' ', $str));
Run Code Online (Sandbox Code Playgroud)
小智 5
preg_replace('#\<(.+?)\>#', ' ', $text);
Run Code Online (Sandbox Code Playgroud)
回答晚了,但试试这个,基本上选择 <> 内的所有内容,包括标签。