Как следует из названия, я пытаюсь обернуть каждое слово в <span>
стороне сервера. Но iam не хватает правильного RegEx.
Мой текущий код PHP выглядит так.
function exampleFunction($text) { $re1 = '/(<.*>)(.*)(<\/.*>)/'; $str = $text; preg_match_all($re1, $str, $matches, PREG_SET_ORDER, 0); $result = NULL; foreach($matches as $key => $value) { $words = $value[2]; $start_tag = $value[1]; $end_tag = $value[3]; $re2 = '/(\w+|.)/'; preg_match_all($re2, $words, $word_matches, PREG_SET_ORDER, 0); $paragraph = $start_tag; foreach($word_matches as $key => $value) { if($value[0] != " ") { $paragraph .= '<span>'.$value[0].'</span>'; } else { $paragraph .= $value[0]; } } $paragraph .= $end_tag; $result .= $paragraph; } return $result; }
Замена вещь – не единственная проблема.
Когда я добавляю что-то вроде
<h1>Hello, dudes</h1> <p>This stackoverflow test text. Using all special chars like üöä and some spicy ß or ? and !. What do u think about some () or % worth about 5000$ or €? Iam not sure, but that should be enough. And a link to <a href="google.com">google</a> would be awesome. Whats about further text? Thats buggy, isnt it? üöä ?ßß</p>
я получил
<h1><span>Hello</span><span>,</span> <span>dudes</span></h1><p>This stackoverflow test text. Using all special chars like üöä and some spicy ß or ? and !. What do u think about some () or % worth about 5000$ or €? Iam not sure, but that should be enough. And a link to <a href="http://google.com">google</a> <span>would</span> <span>be</span> <span>awesome</span><span>.</span> <span>Whats</span> <span>about</span> <span>further</span> <span>text</span><span>?</span> <span>Thats</span> <span>buggy</span><span>,</span> <span>isnt</span> <span>it</span><span>? </span> <span> </span><span> </span><span> </span><span> </span> <span> </span><span> </span> <span>?</span><span>ßß</span></p>
После <a>
это то, что мне нужно, кроме странных специальных символов. Может ли кто-нибудь исправить это для меня? Я не понимаю. Честно говоря, я думаю, что мне просто нужно правильное регулярное выражение, чтобы обернуть каждое слово тегом <span>
.