-3

I want to search a rule, iptables, within a string that has a port blocked—and I want to show that port.

For example, the rule iptables -A OUTPUT -p tcp --dport 8080 -j DROP; I'd like to be able to search by strpos the string tcp --dport 8080 -j DROP but with a range of numbers 1-65335 instead of 8080.

Please excuse my poor English.

anonymoose
  • 1,169
  • 2
  • 21
  • 62
  • Use a regex to do this rather than strpos. If you want more help, include a complete, minimal example. – erik258 Jan 26 '18 at 01:02
  • @DanFarrell My objective is get the string that has "tcp --dport 1-65355 -j DROP". for example "tcp --dport 8080 -j DROP" or "tcp --dport 21 -j DROP" – Alexandre Carvalho Jan 26 '18 at 01:05
  • 1
    Show us what you've tried so far and what happened, and we'll help you figure out how to fix it. – erik258 Jan 26 '18 at 01:07
  • @DanFarrell i didn't try too much, i used a lot of strpos, but not at this level, so i dont really know what to try. im sry – Alexandre Carvalho Jan 26 '18 at 01:09

1 Answers1

2

Assuming each string is in fixed format like your example, you can search for the number then check if within range using preg_match() function

$str = 'iptables -A OUTPUT -p tcp --dport 8080 -j DROP;';

preg_match('/\d+/', $str, $match); // search for matches
if ($match[0] >= 1 && $match[0] <= 65335) {
    echo "Valid number found on string";
}

Pattern /\d+/ searches for any digit, 1 to unlimited times

Notes:
1. Will cause undefined errors/warnings when no number found on string
2. May become inaccurate when more than 1 whole number found

Luffy
  • 1,028
  • 5
  • 13