2016-05-26 11 views
1

Was ich versuche zu tun, ist ziemlich einfach, aber ich kann es nicht herausfinden. Ich möchte für einen Textkörper gescannt werden für alles, was wie >>1234 aussieht und durch <a href="1234">>>1234</a> ersetzt werden Ich kann mir keinen Weg vorstellen, dies zu tun, obwohl ich Teile tun kann. Das Schreiben einer Regex ist einfach genug, um Instanzen von >>1234 zu finden, aber es kann mir nicht helfen. Dies kann realistischerweise auf zwei Arten geschehen, wobei der Client mit dem Text wie er ist und dann mit Javascript formatiert wird oder der Server den Text jedes Mal verarbeitet und die formatierte Version wieder ausspuckt.Ich mache ein Imageboard und kann nicht herausfinden, Link zitiert

Hier ist die Github Seite: https://github.com/4tran/VIB

Hier ist ein Beispiel für eine regex Ich habe versucht, die etwas gearbeitet hat:

<?php 
function formatLink($post) { 
    if(preg_match('/^\>\>([0-9]+)$/', $post)) { 
     echo $post; 
    } 
} 
formatLink(">>10"); // returns ">>10" 
formatLink("spaghetti"); // returns "" 
formatLink(">>10 spaghetti"); // returns "" 
?> 

Jede Hilfe wäre sehr dankbar, ich bin wirklich hier stecken.

BEARBEITEN: Ich habe ETWAS VERFOLGT. Okay, also für jeden, der helfen möchte, habe ich jetzt eine sehr gute Referenz für das, was ich machen möchte. Ich habe den zweiten Teil vor dem ersten begriffen, den zweiten Teil zitierte ich. Hier ist der Code:

$re = "/^^(>[a-zA-Z0-9_ ]*$)/mi"; 
$subst = "<p class=\"quote\">$1</p>"; 
foreach ($boards as $x) { 
    $x = $db->real_escape_string($x); 
    $db->real_query("SELECT * FROM posts_".$x." ORDER BY timestamp DESC LIMIT 1"); 
    $res = $db->use_result(); 
    while ($row = $res->fetch_assoc()) { 
    $str = str_replace("\r\n", "\n", $row['content']); 
    $str = str_replace("\r", "\n", $str); 
    $content = preg_replace($re, $subst, $str); 
    echo "<p style=\"font-size:110%;\">/$x/ - </p>" . "<p>" . nl2br($content) . "<a href=\"" . "$x/" . $row['op'] . "\"> [reply]</a></p><br/>"; 
    } 
} 

ENDBEARBEITUNG: Ich habe jetzt auch den ersten Teil.

https://regex101.com/r/kC1bM7/3

Antwort

0

nicht das Schließen Anker, dass $, der restliche Text bricht haben Sie. Der Quantifizierer wird alle zusätzlichen Zahlen finden. (Sie könnten auch den führenden Anker ^ entfernen, wenn die >>number irgendwo in der Zeichenfolge erlaubt ist, in beiden Beispielen führte es, so denke ich, dass das konstant ist?).

Versuchen:

^(>>\d+) 

Demo: https://regex101.com/r/kC1bM7/2

Sie sollten auch die > s als ihre Einheit codieren, wenn Sie, dass in HTML verwenden, &gt;.

PHP Usage ich so etwas wie verwenden würde:

preg_replace('/^>>(\d+)/', '&gt;&gt;$1', $string); 

auch nicht das größer ist als Symbol hat keine besondere Bedeutung in regex so ist es nicht entgangen werden muss.

+0

Danke für die Antwort! Das funktioniert bis auf das Substitutionsbit einwandfrei. im a href sollte es gleich der Zahl ohne das Größer als symbol sein. Gibt es irgendeinen Weg, um es in einem Teil und den anderen in dem anderen Teil zu machen? –

+0

Die richtige Antwort finden Sie hier: https://regex101.com/r/kC1bM7/3 –

+0

Sie könnten auch https://regex101.com/r/kC1bM7/4 tun. Das zweite '^' tat eigentlich nichts für dich. – chris85

Verwandte Themen