2016-09-09 1 views
1

ich brauche alle Hashtags in Zeichenfolge zu finden, aber nicht auf den Link Beispiel:PHP Finden Alle Hashtags But No In Verbindung

#q https://www.youtube.com/watch?v=#Vmyx7cyZcKU #q1 #q3 [ I Want to Get only #q, #q1, #q not hashtags in link ] 

mein Code:

$string = "#q https://www.youtube.com/watch?v=#Vmyx7cyZcKU #q1 #q3"; 
// Link 
$string = preg_replace("!(((f|ht)tp(s)?://)[-a-zA-Zа-яА-Я()[email protected]:%_+.~#?&;//=]+)!i", "<a href='$1' target='_blank'>$1</a>", $string); 
// Hashtag 
$hashtag_url = $web_url. "hashtag/\\0"; 
$string = preg_replace("(\s?#\w+)", "<a href='$hashtag_url'>\\0</a>", $string); 

See Bild Was My-Code anzeigen !! !

http://i.stack.imgur.com/p8IyE.png 
+0

Hash in URLs hat eine spezifische Bedeutung. Alles danach heißt Fragment (andere Namen können zutreffen). Sie werden nicht an den Server gesendet. –

Antwort

2

Spiel alle Hashtags außerhalb der URL kann mit einem regex erreicht werden, die URLs und verwirft sie übereinstimmt, und dann passt hastags in allen anderen Zusammenhängen:

'~(?:f|ht)tps?://[-a-zA-Zа-яА-Я()[email protected]:%_+.\~#?&;/=]+(*SKIP)(*F)|#(\w+)~' 

Siehe regex demo

PHP demo:

$string = "#q https://www.youtube.com/watch?v=#Vmyx7cyZcKU #q1 #q3"; 
$string = preg_replace("!(?:f|ht)tps?://[-a-zA-Zа-яА-Я()[email protected]:%_+.~#?&;/=]+(*SKIP)(*F)|#(\w+)!", "<a href='$1'>$0</a>", $string); 
echo $string; 

Fühlen Sie sich frei einstellen (besonders das Ersatzmuster) nach Ihren Bedürfnissen.

Einzelheiten:

  • (?:f|ht)tps?://[-a-zA-Zа-яА-Я()[email protected]:%_+.\~#?&;/=]+ - die URL Anpassungsteil (aus dem Code genommen)
  • (*SKIP)(*F) - PCRE Verben, das Spiel und Sie zum nächsten Spiel aus dem aktuellen Index Weglassen
  • | - oder
  • #(\w+) - ein # gefolgt von 1 oder mehr Wort Zeichen.

\w Damit Unicode Buchstaben übereinstimmen, auch hinzufügen ~u Modifikator am Ende.

+0

Was ist mit URLs, die andere Zeichen haben, wie Arabisch, Hebräisch usw.? Mit anderen Worten, ich meine '[-a-zA-ZA-яА-Я() 0-9 @:% _ +. ~ #? &;/=]' – SaidbakR

+0

Ihr Code ist in Ordnung, aber Code finden nur Hashtags nicht verknüpfen ? –

+0

Diese Antwort zeigt nur, wie das erforderliche Ergebnis erhalten werden kann. Es gibt viele URL-Regex in der Nähe von SO, wählen Sie die, die Sie benötigen. –