<?php
$url = '/#123_abc" data-text="something-something"';
preg_match_all ('(/#.*)', $url, $result);
var_dump($result);
How can I get only /#123_abc
? I want to exclude data-text="something-something"
<?php
$url = '/#123_abc" data-text="something-something"';
preg_match_all ('(/#.*)', $url, $result);
var_dump($result);
How can I get only /#123_abc
? I want to exclude data-text="something-something"
You can use a negated character class as
/(^\/#[^"]+)/
^
Anchors the regex at the start
[^"]+
Negated character class, matches anything other that a "
.
+
quantifies the pattern, matches one or more occurence.
Test
$url = '/#123_abc" data-text="something-something"';
preg_match_all ('/(^\/#[^"]+)/', $url, $result);
var_dump($result[0]);
// => Outputs
// /#123_abc
\
by using different pair of delimiters as
$url = '/#123_abc" data-text="something-something"';
preg_match_all ('~(^/#[^"]+)~', $url, $result);
var_dump($result[0]);
// => Outputs
// /#123_abc