Problem mit Bildern URL nach Filter anwenden

Ich habe diesen Code in meiner functions.php Datei:

function user_content_replace($content) { // it's not a URL, let's apply the replacement if (!filter_var($string, FILTER_VALIDATE_URL)) { $replacement = '$1.

$2'; return preg_replace("/([^\\.]*\\.[^\\.]*\\.[^\\.]*){1}\\.([^\\.]*)/s", $replacement, $content); } else { // it's a URL, just return the string return $content; } } add_filter('the_content','user_content_replace', 99);

Dieser Code ersetzt jeden dritten Punkt im Inhalt durch Punkt + geschlossen + offener Absatz. Dies ist, weil es der beste Weg in diesem Moment ist, nicht formatierte große Menge an Texten und Posts zu formatieren.

Aber: Dieser Code ändert auch die Bild-URLs, so dass alle meine Bilder keinen Punkt vor der Erweiterung enthalten, sondern **imagename.

jpg** anstelle von Bildname.jpg

Auch wenn ich URL-validation – das gleiche Problem. Irgendwelche Beratung bitte?

Solutions Collecting From Web of "Problem mit Bildern URL nach Filter anwenden"

 < ?php $string = 'Sentence 1. Sentence 2? Sentence 3! Sentence 4... Sentence 5… Sentence 6! Sentence 7. Sentence 8. Sentence 9… Sentence 10... Sentence 11. '; $sentences_per_paragraph = 3; // settings $pattern = '~(?<=[.?!…])\s+~'; // some punctuation and trailing space(s) $sentences_array = preg_split($pattern, $string, -1, PREG_SPLIT_NO_EMPTY); // get sentences into array $sentences_count = count($sentences_array); // count sentences $output = ''; // new content init // see PHP modulus for($i = 0; $i < $sentences_count; $i++) { if($i%$sentences_per_paragraph == 0 && $i == 0) { //divisible by settings and is first $output .= "

" . $sentences_array[$i] . ' '; // add paragraph and the first sentence } elseif($i%$sentences_per_paragraph == 0 && $i > 0) { //divisible by settings and not first $output .= "

" . $sentences_array[$i] . ' '; // close and open paragraph, add the first sentence } else { $output .= $sentences_array[$i] . ' '; // concatenate other sentences } } $output .= "

"; // close the last paragraph echo $output;

Hinweis : Es ist ein sehr grober Code, der die tieferen Probleme nicht überprüft.

Für mehr Information:

  • PHP Modul
  • preg_split ()

Dank @Max Yudin ist dies eine Antwort auf mein Problem:

 function user_content_replace($content) { $sentences_per_paragraph = 3; // settings $pattern = '~(?< =[.?!…])\s+~'; // some punctuation and trailing space(s) $sentences_array = preg_split($pattern, $content, -1, PREG_SPLIT_NO_EMPTY); // get sentences into array $sentences_count = count($sentences_array); // count sentences $output = ''; // new content init // see PHP modulus for($i = 0; $i < $sentences_count; $i++) { if($i%$sentences_per_paragraph == 0 && $i == 0) { //divisible by settings and is first $output .= "

" . $sentences_array[$i] . ' '; // add paragraph and the first sentence } elseif($i%$sentences_per_paragraph == 0 && $i > 0) { //divisible by settings and not first $output .= "

" . $sentences_array[$i] . ' '; // close and open paragraph, add the first sentence } else { $output .= $sentences_array[$i] . ' '; // concatenate other sentences } } $output .= "

"; // close the last paragraph echo $output; } add_filter('the_content','user_content_replace', 99);